/*
 * Yabumi, a 2d scrolling shoot-em-up game.
 * Copyright (C) 2003 Gemma Teruaki <terugen@yabumi.com>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.

 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
 */

#ifndef _HITCIRCLE_H_
#define _HITCIRCLE_H_

/* includes begin */ 
#ifndef _TASKMANAGER_H_
/* need task _option _tasklist */
#include "../taskmanager.h"
#endif
/* includes end */

/* constants begin */
/* constants end */

/* typedef begin */
typedef enum {
  __weapon_missile,
  __weapon_flame
} _weapon;

typedef enum {
  __hit_no, 
  __hit_missile, 
  __hit_flame, 
  __hit_homing,
  __hit_item_missile,
  __hit_item_flame
} _was_hit;

typedef enum {
  __hitcircle_player, 
  __hitcircle_enemy, 
  __hitcircle_musashi
} _client_type;

typedef enum {
  __visible,
  __invisible,
  __stealth
} _radar_reaction;

typedef struct {
  int x, y;
  _client_type client_type;
  int radius;
  _radar_reaction radar_reaction;
  int cr, cangle;
  _was_hit was_hit;
  /* _list_item *root; !!!circular reference!!! */
  void *root;
} _Hitcircle;
/* typedef end */

/* Global Objects */

/* Prototypes from the hitcircle.c file. */
void Hitcircle_Init();
void Hitcircle_Free();
_Hitcircle *Hitcircle_Create(void *socket, _client_type client_type,
			     int radius, _radar_reaction radar_reaction,
			     int cr, int cangle);
task Hitcircle_Add(_option *optv);
task Hitcircle_Move(_option *optv);
task Hitcircle_Kill(_option *optv);
#endif
